package com.itany.shop.listener;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * @author 石小俊
 * @date 2023年07月11日 14:47
 */
@WebListener
public class CountListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent event) {
        // 当创建了session时,说明有人访问了网站
        // 此时在线人数+1
        // 如果是第一次访问,设置初始值1
        // 由于该数据是向所有访问网站的人员开放的,因此通过application作用域进行储存
        ServletContext application = event.getSession().getServletContext();
        synchronized (this){
            Integer count = (Integer) application.getAttribute("count");
            if(count == null){
                count = 1;
            } else{
                count++;
            }
            application.setAttribute("count",count);
        }
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        ServletContext application = event.getSession().getServletContext();
        synchronized (this) {
            Integer count = (Integer) application.getAttribute("count");
            count--;
            application.setAttribute("count", count);
        }
    }
}
